Identifier-based coupon distribution

ABSTRACT

A client device detects a QR code (or NFC tag). The client device decodes the QR code. The client device determines that the data encoded within the QR code includes a URL. Based on the URL, the client device sends a first request to a first server identified by the URL. In response to the first request, the client device receives from the first server data configured to cause the client device to display, to a user of the client device, at least one of: a video or an interactive web page. Responsive to the data encoded in the QR code, the client device sends to a coupon server: identification data associated with a user of the client device, and a request for the coupon server to distribute a digital coupon for an offer associated with an identifier encoded within the QR code to an account associated with the user.

CROSS-REFERENCE TO RELATED APPLICATIONS; BENEFIT CLAIM

This application claims the benefit of Provisional Application No.61/442,745, filed Feb. 14, 2011, the entire contents of which is herebyincorporated by reference as if fully set forth herein, under 35 U.S.C.§ 119(e). This application claims the benefit as a continuation of U.S.patent application Ser. No. 15/904,060, filed Feb. 23, 2018, which is acontinuation of U.S. patent application Ser. No. 15/644,460, filed Jul.7, 2017, now U.S. Pat. No. 9,940,638, which is a continuation of U.S.patent application Ser. No. 15/400,849, filed Jan. 6, 2017, now U.S.Pat. No. 9,727,889, which is a continuation of U.S. patent applicationSer. No. 14/639,732, filed Mar. 5, 2015, now U.S. Pat. No. 9,619,818,which is a continuation of U.S. patent application Ser. No. 13/396,553,filed Feb. 14, 2012, now U.S. Pat. No. 9,002,727, the entire contents ofwhich are hereby incorporated by reference as if fully set forth herein,under 35 U.S.C. § 120. The applicant(s) hereby rescind any disclaimer ofclaim scope in the parent application(s) or the prosecution historythereof and advise the USPTO that the claims in this application may bebroader than any claim in the parent application(s).

TECHNICAL FIELD

The present disclosure relates to coupon distribution in response to adevice detecting identifiers based on data sensed by one or more sensorson or at the device.

BACKGROUND

The approaches described in this section are approaches that could bepursued, but not necessarily approaches that have been previouslyconceived or pursued. Therefore, unless otherwise indicated, it shouldnot be assumed that any of the approaches described in this sectionqualify as prior art merely by virtue of their inclusion in thissection.

In general, a coupon is a certificate that entitles its holder to acceptan offer described or referenced by the coupon. The offer, alsosubsequently referred to as the “coupon offer,” may be any type ofoffer, but is in general an offer by the coupon provider to provide acustomer with one or more goods or services at a typically discountedprice, or to provide the customer with a gift in exchange for theperformance of an act, such as purchasing a good or service. A couponoften takes a “hard copy” form, such as a paper certificate, printed onwhich are images and/or text describing terms of the offer. The processof the user accepting a coupon offer by presenting, referencing, orotherwise providing a coupon while purchasing, contracting, or otherwisetransacting with another party shall hereinafter be referred to as“redeeming” the coupon. For example, a customer may redeem a hard copyof a coupon by handing the copy to a clerk during a purchase at a retailstore.

While coupons have conventionally been distributed to customers by hand,such as via mail or newspapers, recent distribution techniques nowprovide customers with opportunities to print their own coupons. Forexample, a number of websites provide search engines or browsablecatalogs with which users may locate offers and then print coupons forthe offers they find. Some of these websites may employ mechanisms tocontrol the number of times that a given offer may be printed by acustomer, by a device, and/or in aggregate. The printed coupons may beused in the same manner as any other coupon.

Other recent distribution techniques involve creating unique digitalcoupons. One such technique involves creating unique digital couponsthat may be saved to an account associated with the user, such as astore loyalty account. The user may redeem such digital coupons duringonline or physical transactions by presenting an account identifier,such as a store loyalty card or an oral identification of the user'stelephone number, for the associated account. Another such techniqueinvolves creating unique digital coupons that may be stored on acomputing device. The digital coupons may be transmitted from thecomputing device to a point-of-sale during a transaction using any of avariety of mechanisms. For example, information about the digital couponmay be uploaded to the point-of-sale during an online transactioninvolving the computing device. As another example, information aboutthe digital coupon may be transmitted wirelessly from a smartphone to areceiving component coupled to a checkout register during a transactionat a brick-and-mortar store.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings:

FIG. 1 is a block diagram of an example system for distributing coupons;

FIG. 2 illustrates a flow for distributing coupons in response to aclient device scanning a QR code;

FIG. 3 illustrates a flow for distributing coupons in response to aclient device detecting an identifier;

FIG. 4 illustrates a flow for distributing coupons in response to anaccess point detecting a portable identifier; and

FIG. 5 is a block diagram that illustrates a computer system upon whichan embodiment of the invention may be implemented.

DETAILED DESCRIPTION

In the following description, for the purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of the present invention. It will be apparent, however,that the present invention may be practiced without these specificdetails. In other instances, well-known structures and devices are shownin block diagram form in order to avoid unnecessarily obscuring thepresent invention.

Embodiments are described herein according to the following outline:

-   -   1.0. GENERAL OVERVIEW    -   2.0. FUNCTIONAL OVERVIEW        -   2.1. Distribution by Scanning a QR Code        -   2.2. Distribution using Coupon Management Application        -   2.3. Distribution at an Access Point    -   3.0. Client Device    -   4.0. Detecting an Identifier    -   5.0. Selecting a Coupon Offer Based on the Identifier    -   6.0. Identifying the User    -   7.0. Distributing a Coupon    -   8.0. Preliminary Activities Conducted Prior to Coupon        Distribution    -   9.0. Verifying that the User has Participated in a Prerequisite        Activity    -   10.0. Implementation by a Coupon Management Application    -   11.0. Implementations Involving Generic Identifier Detection        Applications    -   12.0. Distribution Restrictions    -   13.0. Identifiers Corresponding to User's Device    -   14.0. Coupon Distribution by Client Device    -   15.0. Distribution of Identifier-Bearing Mechanisms    -   16.0. Miscellaneous    -   17.0. Example Process Flows    -   18.0. Example Coupon Distribution System        -   18.1. Coupon Provider/Distributor        -   18.2. Coupon Distribution Server        -   18.3. Client        -   18.4. Information Server        -   18.5. Retailer        -   18.6. Variations and Alternatives    -   19.0. HARDWARE OVERVIEW        1.0. General Overview

Approaches, techniques, and mechanisms are disclosed for distributingcoupons via interactions with mobile devices. In an embodiment, a clientdevice detects a Quick Response (QR) code. The client device decodes theQR code to identify data encoded within the QR code. The client devicedetermines that the data encoded within the QR code includes a uniformresource locator (URL). Based on the URL, the client device sends afirst request to a first server identified by the URL. In response tothe first request, the client device receives, from the first server,data configured to cause the client device to display, to a user of theclient device, at least one of: a video or an interactive web page.Responsive to at least the data encoded in the QR code, the clientdevice sends to a coupon server: identification data associated with auser of the client device, and a request for the coupon server todistribute a digital coupon for an offer associated with the QR code toan account associated with the user.

In an embodiment, the request for the coupon server to distribute adigital coupon includes at least a portion of the URL. In an embodiment,the client device receives, from the first server, confirmation of atleast one of: the user has completed viewing of the video, or the userhas completed the interactive web page. The client device sends therequest to the coupon server responsive to the client device receivingthe confirmation. In an embodiment, the client device selects the offerto request based at least on an identifier encoded within the QR code.In an embodiment, the client device receives, from the coupon server, anindication of which digital coupon was added to the account. The clientdevice displays information about the digital coupon to the user.

In an embodiment, a coupon management application or relatedconfiguration routine configures a client device to call the couponmanagement application upon receipt of data that matches predefinedcriteria. The coupon management application, while executing on theclient device, is invoked with a call that includes first data thatmatches the predefined criteria. The coupon management applicationreceives, from a first server, confirmation data indicating that a userof the client device has participated in a prerequisite activity forobtaining a coupon. Responsive to receiving the confirmation data, thecoupon management application sends to a coupon server: identificationdata associated with the user of the client device, and a request forthe coupon server to distribute a coupon for an offer associated withthe first data to the user.

In an embodiment, responsive to the call that invokes the couponmanagement application, and based on the first data, the couponmanagement application instructs the client device to send a request tothe first server to conduct the prerequisite activity. In an embodiment,the first data is data that was decoded from one of: a Near FieldCommunication (NFC) signal, an RFID signal, a QR code, a digital image,or an audio signal. In an embodiment, the first data is a uniformresource identifier (URI). In an embodiment, the first data is one of:at least a portion of the confirmation data, or data that iscommunicated from the first server in association with the confirmationdata.

In an embodiment, the coupon management application selects the offer torequest based at least on one of: the first data, or the confirmationdata. In an embodiment, the coupon management application includes, withthe request, data to assist the coupon server in selecting the offer,the data including at least one of: current location data for the user,or data returned from the first server. In an embodiment, the couponmanagement application selects the offer to request based on at leastone of: current location data for the user, data returned from the firstserver, historical data indicating other coupons associated with theaccount, historical data indicating items purchased in transactionsinvolving the user, or historical data indicating items added to ashopping list at the client device.

In an embodiment, the coupon management application receives, from thecoupon server, an indication of a digital coupon that was added to anaccount associated with the user in response to the request from thecoupon management application. The coupon management applicationdisplays, at the client device, information about the digital coupon tothe user.

In an embodiment, the first server is the coupon server. In anembodiment, the predefined criteria include at least one of: a protocolidentifier, or a portion of a uniform resource locator (URL). In anembodiment, the identification data is at least one of: a clientidentifier, a session identifier, or a user identifier.

In an embodiment, one or more computing devices execute one or moreinstructions encoded in a computer-readable media, such as a mediabearing a QR code that is scanned by a client device. Execution of theone or more instructions causes performance of the following. The clientdevice, acting upon the instruction(s), sends a first request to a firstserver. Responsive to the first request, the first server returns to theclient device at least one of: an interactive web page, or a video.Further responsive to the instruction(s) encoded in the QR code and/ordata returned from the first server in response to the first request,the client device sends to a coupon server: identification dataassociated with a user of the client device, and a second request forthe coupon server to distribute a coupon for an offer associated with afirst identifier to the user. The coupon server identifies a specificoffer based on the first identifier. The coupon server distributes thecoupon by performing at least one of: storing a digital coupon for thespecific offer in an account associated with the user; or sending amessage to the user with instructions for generating a print coupon forthe specific offer. The coupon server returns to the client device, fordisplay at the client device, information about the distributed couponand the specific offer.

In an embodiment, the one or more instructions are a URL encoded withina QR code. The URL specifies at least the location of the first serverand instructions to include in the request to the first server. In anembodiment, the one or more instructions, when executed by the one ormore computing devices, further cause performance of: the first serverdetecting an event, the event being one of: the user successfullycompleting the interactive web page, or the user fully watching thevideo; responsive to the first server detecting the event, the firstserver sending confirmation data to the client device; and the clientdevice sending the second request to the coupon server responsive to theconfirmation data.

In an embodiment, the one or more instructions, when executed by the oneor more computing devices, further cause performance of: calling acoupon management application at the client device, wherein the couponmanagement application is separate from a standard web browser of theclient device; the coupon management application of the client devicesending the identification data and the second request to the couponserver.

In an embodiment, an apparatus such as an NFC tag comprises a signalemitter configured to transmit a signal that encodes one or moreinstructions that, when interpreted by one or more computing devices,cause performance of the steps described herein.

In an embodiment, a system comprises an access point of one or morecomputing devices. The access point comprises an NFC reader configuredto receive NFC signals encoding portable identifiers. The access pointfurther comprises one or more communication interfaces coupled to acoupon distribution server. The access point further comprises one ormore retail-side processors configured to perform: in response to theNFC reader detecting an NFC signal that encodes a particular portableidentifier, sending the particular portable identifier to the coupondistribution server via the one or more communication interfaces.

In an embodiment, the system further comprises the coupon distributionserver. The coupon distribution server comprises one or more memoriesthat store mappings of portable identifiers to user identifiers. Thecoupon distribution server further comprises one or more server-sideprocessors configured to perform: selecting a coupon offer; locating aparticular user identifier associated with the particular portableidentifier based on the mappings; and distributing a coupon to a userassociated with the particular user identifier by performing at leastone of: storing a digital coupon for the specific offer in an accountassociated with the user; or sending a message to the user withinstructions for generating a print coupon for the specific offer.

In an embodiment, the one or more server-side processors are furtherconfigured to perform: selecting the coupon offer based on an accesspoint identifier for the access point. In an embodiment, the one or moreretail-side processors are further configured to perform: selecting acoupon offer identifier from a plurality of coupon offer identifiers;and sending the coupon offer identifier to the coupon distributionserver with the particular portable identifier.

In other aspects, the invention encompasses computer apparatuses andcomputer-readable media configured to carry out the foregoing steps.

2.0. Functional Overview

A coupon distributor provides coupons or coupon offers to a user inresponse to the user utilizing a client device to detect an identifierin based on data sensed by one or more sensors at the device, such as indata encoded in a quick response (QR) two-dimensional bar code ortransmitted by a near field communications (NFC) tag such as aradio-frequency identification (RFID) tag. Based on information in orassociated with the identifier, such as a URL or coded instructions, theclient device causes the performance of one or more actions that resultin the distribution of a coupon to the user of the client device. Theactions may include operations performed by one or both of the clientdevice and a coupon distribution server with which the client devicecommunicates. In an embodiment, prior to distributing the coupon,preliminary actions may be performed or are required to be performed,such as displaying a video or conducting a survey.

In an embodiment, a client device scans or otherwise detects anidentifier. Based on the identifier, the client device causes a couponto be distributed to a user of the client device.

In an embodiment, a client device scans or otherwise detects anidentifier. Based on the identifier, the client device sends a requestto a server to distribute a coupon for an offer associated with theidentifier to a user of the client device.

In an embodiment, a client device scans or otherwise detects anidentifier. Based on the identifier, the client device engages in anactivity, such as displaying a website, displaying a video, and/orgathering data from a user. Upon terminating the activity, a coupon foran offer associated with the identifier is generated for the user.Completion of the activity may be configured as a required step orcondition to obtaining the coupon or offer.

In an embodiment, an access point detects an identifier associated witha portable device. The access point sends a request to a server todistribute a coupon to a user associated with the identifier.

2.1. Distribution by Scanning a QR Code

FIG. 2 illustrates a flow 200 for distributing coupons in response to aclient device scanning a QR code, according to an embodiment.

At block 210, a client device scans a QR code. The client device may dothis, for example, by using an attached or embedded image sensor tocapture an optical image of media to which the QR code has been printed,converting the optical image into a digital signal, and then applyingsignal processing techniques to recognize the QR code. Other scanningtechniques may also be used, without limitation. In an embodiment, block210 is initiated by the user instructing the client device to scan for aQR code via, for instance, a dedicated scanning application or a couponmanagement application. In an embodiment, block 210 is initiated by theuser capturing or otherwise receiving a digital image, and theninstructing the client device to analyze the digital image for one ormore QR codes.

At block 220, the client device decodes the QR code and identifies a URLin the decoded data. At block 230, the client device sends a request toa server, as indicated by the URL. For example, the URL may instruct theclient device to send a GET HTTP request for a video, web page, webapplication, or other resource to a server at a specified IP address ordomain, along with certain query-value pairs or target identifiers. Inan embodiment, blocks 220 and 230 are performed at the client device byan application that was responsible for scanning the QR code in block210. In an embodiment, block 220 is performed by the scanningapplication, which then invokes another application such as a webbrowser to perform block 230. In an embodiment, portions of the URL,such as the protocol name or domain name, instruct the client device toinvoke a specific application, such as coupon management application, toperform block 230.

At block 240, the client device conducts an activity with the user basedon instructions or other data received from the server in response tothe request of block 230. For example, the client device may present tothe user a video or interactive web page that was received from theserver in response to the request of block 230. Block 240 may furthercomprise submitting additional requests and/or receiving additionalinformation from the server. For instance, the interactive web page maycomprise one or more forms that the user is invited to fill out andsubmit to the server.

At block 250, the client device optionally receives confirmation thatthe activity of block 240—be it watching a video, filling out a survey,subscribing to a newsletter, sending a message to a friend, and so on—iscomplete. In an embodiment, block 250 comprises the client determiningthat an activity has been completed, such as waiting until a video hasbeen played back in its entirety (or at least to a certain percentagethereof). In an embodiment, block 250 comprises the client devicereceiving confirmation data indicating completion of the activity fromthe server. For example, confirmation data may take the form of an HTTPresponse code that redirects the client device to a URI that instructsthe client device to perform block 260. In an embodiment, block 250comprises the server communicating with yet another server, such as asocial network server, to verify that an activity has been performed. Inan embodiment, block 250 comprises the server analyzing form data fromthe user to verify that it meets certain qualifications. In yet otherembodiments, the client device is configured to proceed with block 260regardless of whether confirmation is received per block 250.

At block 260, the client device sends, to a coupon distribution server(also referred to as coupon server), user identification data and arequest for coupon associated with the QR code. The user identificationdata may be any combination of session identifiers, cookies, clientdevice identifiers, user names, and so forth. The request may optionallyinclude offer identifier(s) or other offer selection criteria that wereincluded in the QR code and/or any confirmation data received in block250.

For example, the confirmation data of block 250 may comprise a URL thatinstructs a browser or other application at the client device to performblock 260 by sending a specified request to a coupon server. As anotherexample, the confirmation data of block 250 may include a URI thatinstructs the client device to call a coupon management application toperform block 260. The URI may include identifiers or other offerselection criteria to pass to the coupon management application. Thecoupon management application is configured to send the request of block260 responsive to this call. As another example, the data decoded fromthe QR code may comprise offer identifiers or other offer selectioncriteria, either in the URL identified in block 220, or in otherinstructions found in the QR code. In either case, the coupon managementapplication may parse identifiers or other offer selection criteria fromthe decoded QR code. The request may also optionally include offerselection criteria that were not found in the QR code or confirmationdata, such as location data, user history data, or user preferences.

In embodiments involving a coupon management application, the couponmanagement application may perform additional interactions with the userprior to submitting the request of block 260. For example, a couponmanagement application may identify one or more possible offers that theuser is eligible for based on offer identifiers or other criteria in theQR code and/or confirmation data. The coupon management application maypresent information about the one or more possible offers. The couponmanagement application may then request that the user select one or moreof these offers and/or confirm that the user is interested in receivinga coupon for one or more of these offers.

In an embodiment, block 260 may further involve the client devicerequesting, on behalf of the coupon server, that the user provide theuser identification information. However, in yet other embodiments, theuser identification information is already known to the couponmanagement application and/or coupon server based on previousinteractions with the user.

If the client device is configured to receive the confirmation datadescribed in block 250, the request of block 260 is not submitted untilafter the confirmation data is received. Optionally, data in the QR codemay instruct the client device whether to wait for confirmation data perblock 250, or even whether to perform 230-250 at all.

At block 270, based on data provided in block 260, the coupon serverprovides one or more coupons in response to the request of block 260.The coupon server may provide a digital coupon by saving it to anaccount associated with the user, or the coupon server may provide amessage to the user indicating how the user may obtain a printed copy ofthe coupon. In an embodiment, the coupon server provides coupons for anyand all coupons that are mapped to the offer identifiers and/or offerselection criteria received in block 260. In an embodiment, the couponserver uses the offer identifiers and/or offer selection criteriaprovided in block 260 to select one or more offers for which the couponserver will provide coupons in block 270.

At block 280, the coupon server optionally provides an indication to theclient device that the one or more coupons have been provided to theclient. This indication may further indicate the offer(s) that thecoupon(s) were provided for, if not already known to the client device.For example, a coupon management application may receive an instructionfrom the coupon server to update a list of coupons that have been“saved” to the user's loyalty cards. The coupon management applicationmay also be instructed by the coupon server (or the server of block230-250) to update a shopping list to include one or more productsrelated to the provided coupon(s) or the activity conducted in block240.

Flow 200 is an overview of but one example flow for practicing thetechniques described herein. Other flows may include additional, fewer,and/or different elements in potentially different arrangements. Forexample, in an embodiment, elements similar to those found in flow 200are performed in response to detecting certain types of data encoded inwireless signals such as transmitted by NFC tags. Examples of otherflows, as well as more specific details of the elements in flow 200, areprovided in other sections of this disclosure.

2.2. Distribution Using Coupon Management Application

FIG. 3 illustrates a flow 300 for distributing coupons in response to aclient device detecting an identifier, according to an embodiment. Flow300 recites a technique that specifically involves a coupon managementapplication that is installed on a client device. Other techniques mayor may not involve a coupon management application.

At block 310, a coupon management application is registered with aclient device for handling instructions or other data that matchpredefined criteria. For example, an installer or configuration utilityfor the coupon management application may establish one or moreregistered handles or “intents” to handle certain types of actionsand/or mappings of certain protocols or domain names to the couponmanagement application.

At block 320, the client device detects data (hereinafter an“identifier”) that matches the predefined criteria. The data may bedetected in any of a variety of forms, including without limitation inan encoded form such as found in a NFC signal or QR code, or in aninstruction from a server that is responsive to a request from theclient device over a network.

At block 330, based on the registration of block 310, and responsive todetecting the identifier, the client device invokes the couponmanagement application and provides the identifier.

At block 340, the coupon management application optionally receivesconfirmation that a user of the client device has participated in aprerequisite activity, such as viewing a web page or a video. In anembodiment, the confirmation is the identifier. In other embodiments,the confirmation arrives separately. For example, the coupon managementapplication may conduct the prerequisite activity and thus provide theconfirmation to itself. As another example, the coupon managementapplication may interact with a server to conduct the prerequisiteactivity, and thus wait to receive or execute a confirmation instructionfrom the server. As another example, the prerequisite activity may beconducted in part by a web browser or other application that isdifferent from the coupon management application. The coupon managementapplication may thus wait in the background for a confirmationinstruction from the other application.

At block 350, the coupon management application optionally selects acoupon offer to request based at least on the identifier and/or theconfirmation data. The selection may further involve input from a useror a sensor on the client device, such as a location sensor or a sensorthat detected the identifier of block 310. In other embodiments, thisselection will instead be performed by a coupon server after block 360.

At block 360, the coupon management application sends, to a couponserver, identification data for the user and a request for a couponassociated with the identifier detected in block 310. Block 360 may beperformed in similar manner to block 260 of flow 200.

At block 370, based on data provided in block 360, the coupon serverprovides one or more coupons in response to the request of block 360.Block 370 may be performed in similar manner to block 270 of flow 200.

At block 380, the coupon server optionally provides an indication to theclient device that one or more coupons have been provided to the client.Block 380 may be performed in similar manner to block 280 of flow 200.

Flow 300 is an overview of but one example flow for practicing thetechniques described herein. Other flows may include additional, fewer,and/or different elements in potentially different arrangements.Examples of other flows, as well as more specific details of theelements in flow 300, are provided in other sections of this disclosure.

2.3. Distribution at an Access Point

FIG. 4 illustrates a flow 400 for distributing coupons in response to anaccess point detecting a portable identifier, according to anembodiment.

At block 410, an access point detects a portable identifier, such as apassive NFC tag, an active NFC identifier transmitted by a portablecomputing device, or a Bluetooth MAC identifier. In an embodiment, theaccess point is any device or combination of devices deployed in aretail store or public space. For example, the access point may be astandalone terminal located in a stadium. Or the access point may be acombination of a thin client terminal, deployed strategically in anaisle at a retail store, coupled via a network to a backend retailserver.

In an embodiment, block 410 may be activated, at least in part, by auser instructing a portable device to transmit the portable identifier.In an embodiment, block 410 may be activated simply by the user bringinga portable device within communications range of the access point.

At block 420, the access point optionally conducts a prerequisiteactivity with the user responsive to the detecting of block 410. Forexample, if the access point includes a display and/or speakers, theaccess point may present text, audio, and/or visual information to theuser. The access point may further require input from the user via anysuitable input mechanism. In an embodiment, the access point isconfigured to utilize the user's portable device as an input/outputdevice. For example, the access point may send text, audio, and/orvisual information to the portable device directly and/or obtain inputfrom the user via the portable device. As another example, the accesspoint may send instructions to the portable device to access informationon a server. In an embodiment, the portable identifier is used to tailorthe prerequisite activity to the user, based on, without limitation,previous interaction with the access point, purchase history, preferencedata, and so forth. In other embodiments, however, no prerequisiteactivity is necessary.

At block 430, the access point sends the portable identifier to a couponserver. For example, the access point may communicate the identifierdirectly to the coupon server via a back-end network. Alternatively, theaccess point may send the portable identifier to the client device, andthe client device may then send the portable identifier to the couponserver.

At block 440, the access point optionally sends offer selection criteriato the coupon server. The offer selection criteria may include, withoutlimitation, one or more offer identifiers that were randomly orotherwise selected by the access point, location data for the accesspoint, an access point identifier, and/or information input by the userduring the prerequisite activity. Blocks 440 and 430 may be performedwith the same request.

At block 450, coupon server identifies a user to whom the portableidentifier is mapped.

At block 460, coupon server selects a coupon offer. At block 470, thecoupon server provides a coupon for the selected coupon offer. Blocks460 and 470 proceed in similar manner to block 270 of flow 200.

At block 480, if the portable identifier was associated with a computingdevice (as opposed to a passive tag), a coupon application executing atthe portable device optionally displays information about the couponusing any suitable display technique. For example, block 480 maycomprise the coupon server looking up an address for the portable deviceand pushing a notification to the address. Or, block 480 may comprisethe access point providing the information to the portable device.

Flow 400 is an overview of but one example flow for practicing thetechniques described herein. Other flows may include additional, fewer,and/or different elements in potentially different arrangements.Examples of other flows, as well as more specific details of theelements in flow 400, are provided in other sections of this disclosure.

3.0. Client Device

The client device is any device capable of detecting an identifier basedon data sensed by one or more sensing components at the device. Possiblesensing components may include, without limitation, scanners, cameras,NFC readers, barcode readers, GPS receivers, other receivers, radios,and microphones. The client device may further be equipped withcomponents for executing instructions to interpret data captured by thesensing components as identifiers. The client device may further beequipped with processing components for executing one or moreapplications. The client device may further be equipped with one or morenetwork interfaces for communicating with a coupon distribution servereither continuously or on a periodic basis. However, in an embodiment noconnection to a coupon distribution server is required.

In an embodiment, the client device is a portable device, such as amobile phone, PDA, tablet computer, and so on. In an embodiment, theclient device is uniquely associated with a user. In an embodiment,multiple users may be associated with the same client device, and/ormultiple client devices may be associated with the same user. Otherembodiments may feature other types of client devices, such as a laptopor desktop computer coupled with a webcam or scanner.

4.0. Detecting an Identifier

In an embodiment, the coupon distribution process begins with the clientdetecting data that functions, at least in part, as offer-selectioncriteria. For convenience, this data is referred to herein as anidentifier. Some or all of the information in the identifier may bemapped by itself or in combination with other offer-selection criteriato one or more coupon offer identifiers. The identifier may include anyof a variety of information. For example, the identifier may include auniform resource locator (URL) and/or other types of instructions in anysuitable language. In an embodiment, the identifier (or a portionthereof) uniquely identifies a product or coupon offer. For example, theidentifier may be a coupon offer identifier, a serial number for apre-generated coupon, a product UPC, or a set of name-value pairs forparameters of a coupon offer. In an embodiment, the identifier includesa location, such as a GPS coordinate, cell phone tower, store, oraddress.

The identifier may be detected in a variety of manners. For example, theidentifier may be encoded in a QR code or barcode attached to a consumerproduct or a stationary object. As another example, the identifier maybe encapsulated in data transmitted from another device, such as an NFCtag, infrared transmitter, WiFi radio, or Bluetooth device. In anembodiment, the identifier may be detected from a location sensor. In anembodiment, the identifier may be encoded in an image of or audio cliprecorded from, for instance, a place, product, or person. For example, auser could take a picture of a store or product, or record a clip from asong or movie, and receive a coupon related to the picture or recording.In an embodiment, the identifier may be detected as a result of applyingone or more lookup operations and/or recognition algorithms to any ofthe above data.

In an embodiment, the user initiates the detection process byinstructing the device to capture data using a sensing component, suchas a camera, and to analyze the captured data for identifiers, such asQR codes. The user then positions the device and/or the sensingcomponent in such a position that the sensing component may capture datathat the user believes to encode or correspond to an identifier. Theclient device attempts to detect identifiers in the captured data usingany suitable identifier recognition technique. In an embodiment, ratherthan requiring an explicit instruction from the user, the detectionprocess is ongoing, executed by an application that periodicallyreceives data from a sensing component at the client device.

In an embodiment, the user may initiate the identifier detection processvia one or more instructions to any of a variety of applicationsexecuting at the client device. For example, the user may instruct animaging application to scan for and act upon a QR code. In anembodiment, the identifier detection process is initiated by anapplication or device component that constantly or periodically monitorsdata from a sensor, such as a driver for an NFC reader. In anembodiment, various sub steps of the identifier detection process may beperformed by the initiating application making API calls to variouscomponents of the device, such as to an image capture library. In anembodiment, various sub steps of the identifier detection process may beperformed by the initiating application making requests to variousserver components, such as an off-client pattern recognition analysiscomponent or identifier resolution database.

In an embodiment, the identifier is encoded as a signal from an emittingdevice that is configured with logic to select from a plurality ofdifferent identifiers to provide the client device. The emitting devicemay select from these different identifiers based on any one or more of:current transaction information, current time, random selection,analysis of current inventory and/or purchasing trends, a device or useridentifier transmitted from the client device, location history data forthe client device, and so forth.

5.0. Selecting a Coupon Offer Based on the Identifier

In an embodiment, once the identifier has been detected, a coupon offeris selected based on the identifier. This process may involve decodingthe identifier, if necessary. For identifiers that include executableinstructions, this process may further involve evaluating the executableinstructions. In an embodiment, beyond these two optional steps, theoffer selection process is relatively simple, as the identifier (ordecoded identifier) may explicitly specify the coupon offer to beselected. For example, the identifier may be a unique offer identifier,or may contain a parameter-value pair specifying the unique offeridentifier. In an embodiment, the identifier may specify multipleoffers, and the user may be provided with coupons for each of thespecified offers.

In an embodiment, the identifier does not explicitly identify a couponoffer. Rather, one or more coupon offers may be selected on the basis ofother information in the identifier. For example, the identifier mayinclude information such as a product identifier, store identifier,and/or location identifier. The user may be matched with one or morequalified coupon offers based on such information. As another example,the identifier may include an address of a server-side application thatrandomly (or pseudo-randomly) selects one or more coupon offers for theuser. As another example, the identifier includes a list of couponoffers. One or more offers may be selected from the list at random.Various combinations of the above approaches may also be used.

In an embodiment, the selection of one or more coupon offers may furtherinvolve external factors, such as user preferences, user shoppinghistories, whether a user is eligible for a coupon offer, coupon offerdistribution parameters, the current date and/or time, the location ofthe client device (e.g., if the identifier is not a stationaryidentifier that includes location information), weather forecasts, thetype of the client device (e.g. portable as opposed to desktop), thecontents of the user's shopping list, user-provided information during apreliminary activity triggered by the identifier, coupon inventory data,per-user coupon distribution limits, the coupons already associated withthe user's account or device, data indicating coupons redeemed by otherusers in a same location as the user, and so on. For example, a user maybe provided coupon offers of greater value when the user is not at astore and of lesser value when the user is already at a store. Asanother example, the user may be provided coupon offers of lesser valuewhen an item is already on the user's shopping list and of greater valuewhen the item is not on the user's shopping list. As another example,the user may be provided different coupon offers depending on how theuser responds to a web survey presented to the user in response to thedetection of the identifier.

In an embodiment, the coupon offer is selected by the client device.However, in other embodiments, the client device may simply relay theidentifier to a coupon distribution server to request that the coupondistribution server select the coupon offer. In yet other embodiments,the coupon offer may be selected by a third-party information server.

In an embodiment, regardless of how the coupon offer is selected, theuser may be asked to confirm that the user wishes to receive a couponfor the selected coupon offer. To assist the user in making a decision,the client device may present various information about the couponoffer. Such information may be provided, for example, by the coupondistribution server or a periodically updated client-side database.However, the client device need not necessarily provide the user withany information about the coupon offer prior to requesting confirmation.Furthermore, in an embodiment, the client device does not requestconfirmation, or the user may disable confirmation requests.

6.0. Identifying the User

In an embodiment, the user is identified prior to coupon distribution.For example, the coupon distribution server may require a known useridentifier in order to determine an account or an address to which thecoupon will be distributed. In some embodiments, user identification mayalso or instead be utilized to enforce coupon distribution limits ordetermine which coupon offer to select. In some embodiments, however,user identification is not necessary.

In an embodiment, the user identifier is obtained via a log-in processat the client device in which the user provides credentials such as auser name and/or account number. The log-in may occur at any time,including both before the detection of an identifier or in response tothe detection of an identifier. A log-in interface may be generated byan application executing at the device, and the application may thenvalidate the log-in based on verification information provided by thecoupon distribution server. Or, the log-in interface may be generated bythe coupon distribution server and presented at the client device usinga thin-client application such as a web browser. In an embodiment, anappropriate user identifier may be determined utilizing authenticationinformation generated during a previous log-in at a server other thanthe coupon distribution server, such as third party user authenticationserver. In an embodiment, upon credentials being verified, a session maythen be established. A session identifier is mapped to the useridentifier. The session identifier may then be used in subsequentcommunications. In an embodiment, an appropriate user identifier may bedetermined utilizing a unique device identifier that has been previouslymapped to the user identifier.

In an embodiment, user identification occurs without requiringinformation sufficient to specifically identify the user. For example,the user may be identified solely by an identifier associated with anaccount containing no personally identifying information, thusmaintaining the user's privacy.

7.0. Distributing a Coupon

Once a coupon offer has been selected and, optionally, the user has beenidentified, a coupon may be distributed to the user by any suitablemechanisms. For example, the coupon distribution server may deliver animage of a coupon for the selected offer to the client device, and theclient device may print or display the image. As another example, thecoupon distribution server may cause a physical coupon for the selectedoffer to be delivered to an address associated with the user. As anotherexample, the coupon distribution server may add a digital coupon for theselected offer to one or more accounts associated with the user, such asstore loyalty card accounts. As another example, a coupon code for thecoupon may be emailed or delivered by SMS to the user's device. Asanother example, the coupon code may be delivered to the couponmanagement application, from which it may be displayed to a cashier as astore during checkout for redemption. Example coupon distributionmechanisms are discussed in further detail in U.S. application Ser. No.12/878,231, filed Sep. 9, 2010, which is hereby incorporated byreference for all purposes as though set forth in its entirety.

In an embodiment, the user may be presented with one or more options forselecting how to distribute the coupon. For example, the user may beasked to select one or more store loyalty account(s), phone numbers, orother unique identifiers with which a digital coupon should beassociated. Or the user may be asked to choose between printing a couponand receiving a coupon by mail or email.

8.0. Preliminary Activities Conducted Prior to Coupon Distribution

In an embodiment, the actions performed responsive to the client devicedetecting the identifier may include conducting one or more preliminaryactivities, such as presenting information to a user and/or collectinginformation from the user, prior to distributing the coupon to the user.For example, in response to scanning a QR code, the application maypresent a video advertising a product. Or, in response to detecting anRFID tag, the application may present the user with a survey.

In an embodiment, performance of the preliminary activity is aprerequisite for distributing a coupon. That is, the coupon is onlydistributed when the client-side application has verified that thepreliminary activity has been performed successfully. Thus, with respectto the examples above, if the user terminates the video before it hascompleted or fails to complete the survey, the user is not provided witha coupon. However, in an embodiment, the coupon may be distributed inresponse to any termination event, regardless of whether the activitywas performed successfully.

In an embodiment, the identifier includes a URL for a client-side orserver-side application that will conduct one or more preliminaryactivities. For example, the identifier may be a URL to a videoadvertisement server, along with one or more parameters by which thevideo advertisement may select a specific video to present to the user.As another example, the identifier may be a URL that is handled by aclient-side application that caches advertisements. The client-sideapplication may optionally utilize parameters from the URL to select anappropriate advertisement. As another example, the identifier may be aURL to a web application containing a form for collecting informationfrom the user, such as answers to a survey.

In an embodiment, the URL may include additional parameters that areused to identify a coupon offer and not the preliminary activity. Theseadditional parameters may be ignored by a third-party server. In anembodiment, the URL of the preliminary activity is itself an identifiermapped to one or more coupon offers at the coupon distribution server.In an embodiment, the identifier encoded in the QR code or receivedsignal includes one or more coupon offer identifiers that are utilizedentirely separate from the URL for the preliminary activity. In anembodiment, a third-party server responsible for conducting thepreliminary activity is configured to return a coupon offer identifierand/or offer selection criteria to the client device and/or the coupondistribution server.

In an embodiment, the identifier may include executable instructionsthat cause a client-side application to perform or initiate preliminaryactivities such as described above. In an embodiment, the identifierdoes not directly specify a preliminary activity. However, the clientdevice or the coupon distribution server may select one or morepreliminary activities based on the identifier. For example, if theidentifier was associated with a certain product, the client device mayrequest that the coupon distribution server provide instructions or aURL for conducting an activity chosen by the manufacturer of theproduct. As another example, the coupon distribution server may, inresponse to detecting that a manufacturer has requested performance of aparticular activity in exchange for a selected coupon offer, cause theclient device to engage in the particular activity prior to distributinga coupon for the selected coupon offer.

9.0. Verifying that the User has Participated in a Prerequisite Activity

As mentioned above, certain preliminary activities may be required priorto coupon distribution. Some activities, such as displaying videos orconducting surveys, may require the user to interact with a server. Insome embodiments, the activities may be conducted by servers other thanthe coupon distribution server. Accordingly, the other servers must beconfigured to inform the client device or the coupon distribution serverthat the user has successfully participated in the prerequisiteactivity.

In an embodiment, the server conducting the preliminary activity isconfigured to return a particular message or other confirmation data tothe client device or coupon distribution server indicating successfulperformance of the activity. Upon requesting the server to conduct thepreliminary activity, the client device or coupon distribution servermay be configured to wait for the receipt of the particular messagebefore proceeding. In an embodiment, returning the particular message ishard-coded into the server-based application that conducts thepreliminary message. In an embodiment, the server-based application maybe instructed to return the particular message via various parameters ora callback URL in the initial request to conduct the preliminaryactivity. In an embodiment, the server could return a web page withembedded confirmation data that the client device inspects to verifythat the prerequisite activity has been completed.

10.0. Implementation by a Coupon Management Application

In an embodiment, a coupon management application executing on a clientdevice performs some or all of the steps described herein as beingperformed by the client device. The coupon management application mayalso perform other functions such as searching for coupon offers,printing coupons, obtaining user identification data, adding coupons tothe user's store loyalty cards, displaying coupons that that have beenadded to the user's account, managing a shopping list, presenting ordelivering coupons during a transaction, authenticating the clientdevice to a coupon distribution server, and so on. Several examples ofsuch a coupon management application are described in U.S. applicationSer. No. 12/896,206, filed Oct. 1, 2010, which is hereby incorporated byreference for all purposes as though set forth in its entirety. However,the coupon management application is any application configured torespond to identifiers as described herein by requesting or causingdistribution of coupons to the user, and does not necessarily need tosupport any particular function described above. In an embodiment, thecoupon management application is separate from the standard web browserof the client device, and is optimized for finding coupon offers and/orviewing coupons associated with a user.

In an embodiment, a user may instruct the coupon management applicationto initiate the identifier detection process. Responsive to anidentifier being detected in the captured data, the coupon managementapplication may perform actions such as adding a digital coupon to theuser's account, generating a printable coupon, adding a productcorresponding to the digital coupon to the user's shopping list, and soforth.

The coupon management application may be configured to communicate witha coupon distribution server to perform some or all of these tasks. Forexample, the coupon management application may, based on the identifier,request that the coupon distribution server provide the user with acoupon for a particular coupon offer. As another example, the couponmanagement application may send user-identifying information to thecoupon distribution server, along with all or a portion of the detectedidentifier. The coupon distribution server may then select a particularcoupon offer for which to provide the user with a coupon.

11.0. Implementations Involving Generic Identifier DetectionApplications

In an embodiment, the identifier detection process may be initiated atany capable application, regardless of whether the application featurescoupon-specific logic. In such an embodiment, the identifier comprisesinformation by which the detecting application may identify anotherapplication capable of providing the afore-mentioned functionality. Thedetecting application may be, for example, a generic QR code or NFCreader. The other application may be any suitable server-side orclient-side application, including both thick clients such as adedicated coupon management application and thin clients such a webbrowser.

For example, the identifier may be a URL. In response to detecting theidentifier, the detecting application may send a request to a coupondistribution server identified in the URL via, for example, a webbrowsing component of the client device. The coupon distribution servermay then execute an application for selecting an offer and distributingthe coupon, and the coupon distribution server may be further guided bydata in the path or query string of the URL.

As another example, the identifier may be a URL. The server addressportion of the URL may direct the detecting application to send theremainder of the identifier to an appropriate server for processing. Theserver may be an intermediate server that conducts a preliminaryactivity and, when the preliminary activity is completed, forwards datato the coupon distribution server.

As another example, the identifier may be a URL that causes thedetecting application to make a request to a server as in the previousexample. The server may be configured to respond to the request byinstructing the client device to send the identifier (or informationderived from the identifier) to a coupon management applicationexecuting at the client device. If the client device does not have thecoupon management application installed, the user may be given theoption of downloading and/or installing the coupon managementapplication. The server may optionally conduct a preliminary activityprior to responding to the request.

As another example, the identifier may be a URL with a protocol that isregistered to be handled by a coupon management application. Thedetecting application thus calls the coupon management application andprovides it with the identifier. The coupon management application thenproceeds as described above.

In an embodiment, the detecting application may also append useridentification information to the data sent to a server. For example,the detecting application may send information for identifying the uservia a cookie or user agent string. If necessary, however, theserver-side application may obtain some or all of the informationnecessary to identify the user by requesting it from the user or theuser's device.

12.0. Distribution Restrictions

In an embodiment, the coupon distribution server may limit the number ofcoupons that may be redeemed by enforcing distribution limits on offers,so that only a certain amount of identifiers may be created for aparticular offer. In an embodiment, the coupon is specificallyassociated with a user account so that user-based coupon distributionlimits may be enforced. Thus, the coupon distributor may limit thenumber of coupons that a given user may obtain for any particular offer.

In an embodiment, the coupon is unique, in that one or a combination ofidentifiers uniquely differentiates the generated coupon from all othercoupons generated for the same offer. Each unique coupon may only beredeemed once, thus discouraging unauthorized duplication of a coupon.

13.0. Identifiers Corresponding to User's Device

In an embodiment, coupon distribution may be initiated by an accesspoint device that detects an identifier transmitted by a user's device.For example, a coupon distributor, retailer, advertiser, manufacturer,or like entity may deploy access point devices in well-traffickedlocations such as stores, restaurants, stadiums, hotels, and so on. Theaccess points may be configured to monitor for unique identifierstransmitted by portable user devices. The unique identifiers mayinclude, without limitation, passive NFC tags, Bluetooth addresses, MACaddress, phone numbers, and so on. A user may register these identifierswith the user's account. When an access point detects that a uniqueidentifier is in its vicinity, the access point instructs a coupondistribution server to distribute a coupon to a user associated with theunique identifier. The coupon may be for a specific coupon offerassociated with the access point, or for an offer selected by the accesspoint or coupon distribution server based on techniques similar to thosedescribed above.

In an embodiment, the access point behaves similar to the mannerdescribed above, except that the access point causes a coupon managementapplication to offer one or more coupons, or a selection of one or morecoupon offers, to the user. The access point may communicate directlywith the coupon management application to this end, or the access pointmay trigger the offering by communicating with a coupon distributionserver that is capable of communicating with the coupon managementapplication. The coupon management application may or may not reside onthe portable device corresponding to the detected identifier. Forexample, the detected identifier may be a standalone RFID tag, but thecoupon management application may execute on the user's tablet computer.The coupon offer may or may not be immediately presented to the user. Infact, in an embodiment, the coupon offer may not be offered to the useruntil the user has been away from the access point for a certain periodof time, or until the user next accesses the coupon managementapplication.

In an embodiment, a coupon management application causes a proprietaryunique identifier to be transmitted from the device. This identifier maybe transmitted repeatedly, in response to a user command, in response tothe user accessing the application, and so on. Thus, the access pointinitiates coupon distribution only for devices having the couponmanagement application installed.

In an embodiment, the identifier transmitted to the access pointincludes information identifying the contents of a shopping list createdby the user. The access point may select one or more coupon offers forthe user based on the contents of the shopping list. For example, theaccess point may select a coupon offer corresponding to an item in theshopping list, or may select a coupon offer corresponding to a productthat is complimentary to or competitive with an item in the shoppinglist.

14.0. Coupon Distribution by Client Device

In some embodiments, the client device causes a coupon to be distributedto the user without the client device communicating with a coupondistribution server between the time that an identifier is detected andthe coupon is distributed.

For example, in an embodiment, the coupon distribution server may havepreviously sent to the client information about a coupon that has beenpre-generated for the user, including information indicating that thecoupon is “locked” (i.e. not eligible for use) until one or moreconditions have been met. One of these conditions may be that the clientdetects a certain identifier, such as by scanning a specific QR code.Once the client has detected this identifier, the coupon is unlocked forthe user. However, in other embodiments, pre-generated locked couponsmay be tracked and unlocked by a coupon distribution server receiving arequest from the client that includes a corresponding identifier.

As another example of server-less distribution, an identifier mayinclude enough information about a coupon to be able to generate adigital coupon without a server. For instance, an identifier may includean offer reference number. The client device may have a database ofoffer terms associated with the reference number. Or, the identifier mayitself specify offer terms. In either case, the client device may thuscreate a digital or print coupon that the user may utilize during atransaction.

The client device may also be configured with logic for generating aunique coupon based on the above information. For instance, the clientdevice may generate a unique identifier based on a function of a deviceidentifier, user identifier, and/or an offer identifier. Thus, a coupondistribution server or other entity may subsequently be able to trackand limit unique coupons that have been redeemed at a retailer. Theclient device may further be equipped to limit the number of times theclient device will create a unique coupon for a specific detectedidentifier.

As another example of server-less distribution, the client device may beconfigured with logic for generating a unique coupon identifier based ona function of a device identifier and/or a user identifier, coupled withthe detected identifier. In such an embodiment, the client device may ormay not be capable of determining what the terms of the coupon are.However, the coupon may still be provided during a transaction, wherethe retailer is capable of determining the coupon terms based on theunique coupon identifier.

As yet another example of server-less coupon distribution, the detectedidentifier may include a unique coupon identifier. In such a case, thedetected identifier may only be used to generate a coupon once. If theidentifier was transmitted from a device with logic for modifying theidentifier, the identifier may be modified the next time it istransmitted so as to include a new unique identifier. For example, thetransmitting device may increment identifiers, or select identifiers todistribute based on an algorithm or set of identifiers provided to thetransmitting device by a coupon distributor.

15.0. Distribution of Identifier-Bearing Mechanisms

The techniques described herein generally rely on identifier-bearingmechanisms, including printed media such as QR codes as well assignal-emitting apparatuses, such as NFC tags. In an embodiment,manufacturers may distribute identifier-bearing mechanisms on or inpackaging for products, such as on the outside of cereal boxes or onpromotional literature included with the product. In an embodiment,advertisers may include identifier-bearing mechanisms in promotionalmaterial distributed by conventional means such as product samples andmass-mailings. In an embodiment, manufacturers, advertisers, and/orretailers may place identifier-bearing mechanisms strategicallythroughout a retail store or public location.

In an embodiment, any of the above distributors of identifier-bearingmechanisms may produce or cause the production of an identifier-bearingmechanism using conventional techniques. The distributor selects anidentifier to encode in the identifier-bearing mechanism. In anembodiment, the distributor determines one or more coupon offeridentifiers to distribute. The distributor may then select theidentifier to encode based on the one or more coupon identifiers. Forexample, the identifier to encode may include the one or more couponidentifiers. Alternatively, the distributor may communicate with acoupon distributor to establish a mapping between the one or more couponidentifiers and another identifier to be encoded, such as a UPC code ora URL to promotional material on a server hosted by the distributor. Or,the distributor may configure an application at a URL to provide the oneor more coupon identifiers to a coupon distribution server or a couponmanagement application. The distributor may then select the URL as theidentifier. In an embodiment, the distributor includes both a URL andoffer identifiers in the encoded identifier. For example, offeridentifiers may be embedded in the URL as values for certain querystring parameters. In an embodiment, the distributor also includestracking parameters in the encoded identifier. In an embodiment, thedistributor determines offer-selection criteria instead of couponidentifiers. In an embodiment, the distributor selects the one or morecoupon offer identifiers based on a product associated with theidentifier-bearing mechanism. In other embodiments, the distributorselects an identifier to encode using any suitable technique forcreating other types of identifiers as described herein.

16.0. Miscellaneous

In an embodiment, coupon distribution is accomplished without informingthe user at the time of distribution. For example, where coupondistribution is initiated by an access point device, the user's accountmay be credited with a coupon without the user being informed. Asanother example, after engaging in a preliminary activity, the user mayor may not be made aware that a coupon has been distributed to the useras a result of engaging in the preliminary activity. In suchembodiments, the coupon may be applied to a transaction without the userhaving known prior to the transaction that the coupon was distributed.The coupon may also be removed from the user's account upon certainconditions being met, such as the user leaving a store, or a certainperiod of time passing. Removal conditions may be included in the offerterms, or specified by an identifier or access point.

17.0. Example Process Flows

In an embodiment, a user logs in, or may already be logged in, to acoupon management application. The user instructs the coupon managementapplication to scan a QR code. The coupon management applicationactivates a QR scanning component. Once a QR code is recognized, the QRcode is interpreted as an identifier. The identifier includes text-basedinstructions for requesting that a coupon distribution server generate acoupon for a specific coupon offer. Based on these instructions, thecoupon management application issues a request to the coupondistribution server that identifies the user and requests that thecoupon distribution server add a digital coupon for the specified offerto the user's store loyalty account(s). The coupon distribution serverinforms the coupon management application that it has honored therequest. The coupon management application displays a list of digitalcoupons in the user's account, including the newly added coupon. Thecoupon management application further displays a shopping list thatincludes one or more products associated with specified coupon offer.The user may then redeem the newly added coupon during a transactionwith a retailer by presenting information identifying the user's accountduring a transaction with the retailer.

In an embodiment, a smartphone periodically monitors for RFID tags. Oncea RFID code is recognized, the smartphone interprets the RFID tag as anidentifier. The identifier is a text-based URL for a web form at a firstserver. The smartphone launches a web browser and requests the URL. Thefirst server presents the web form to the user. The user completes theform, in which the user specifies an email address or social networkingaccount. The first server selects a coupon offer based on the formand/or parameters in the URL. The first server forwards the client's webbrowser to a second URL corresponding to a coupon distribution server.The first server further causes the client's web browser to identify theselected coupon offer and the user email address or social networkingaccount to the coupon distribution server. The coupon distributionserver, upon ensuring that no distribution limits are applicable, sendsa link corresponding to a unique printable coupon for the selectedcoupon offer to the email address or social networking account. The usermay subsequently access the link from a device capable of printing thecoupon.

In an embodiment, a user causes a portable device to execute a QRscanning application. The QR scanner application detects a QR code andinterprets it as a URL. The QR scanner application causes a web browsingcomponent to access the URL. The URL corresponds to a coupondistribution server, and instructs the coupon distribution server to adda coupon to a user account associated with the portable device.

In an embodiment, user instructs a client device to scan a QR code on aproduct such as a box of pizza. The QR code contains a promotionalidentifier that causes the client device launch a web-based videoadvertising new pizza offering. The device then receives an image of acoupon for that offering. The user displays the image from the clientdevice the next time the user orders pizza, and thus receives a discounton the user's next box of pizza.

In an embodiment, a client device detects an identifier transmitted by aBluetooth access point. The client device creates a notification to theuser based on the identifier. When the user requests that the clientdevice provide more information about the notification, the clientdevice displays an advertisement included in the identifier. After theuser views the advertisement, the client device generates a uniquecoupon for the user based on information in the identifier.

In an embodiment, a client device detects an identifier. The clientdevice determines, based on the format of the identifier, that theidentifier may be an identifier for distributing a coupon offer. Theclient device sends the identifier to a coupon distribution server. Theserver looks up the identifier in a database and locates an associatedcoupon offer. The server generates a coupon and distributes it to a useraccount.

In an embodiment, a client device scans a UPC code for a product. Theclient device determines a category for product that corresponds to theUPC code. This determination may be based on a local database at theclient device and/or communication with another server. The clientdevice then identifies a coupon offer in the determined category andcauses a corresponding coupon to be generated for the user. In anembodiment, the coupon offer is selected because it is a competingproduct in the same category, but other embodiments may feature otherselection preferences.

18.0. Example Coupon Distribution System

FIG. 1 is a block diagram of an example server-based system 100 fordistributing coupons. A coupon distribution server 110 is operated by acoupon distributor 115. The coupon distribution server 110 makes couponoffers available to users, such as user 135, on behalf of one or morecoupon providers 195. Coupons may be distributed via a client device 120coupled to a printer 129 at which the coupons may be printed. Couponoffers may also be made available via user 135 requesting that thecoupon offer be saved to his account in association with one or moreaccount identifiers. Coupon offers may also be made available to user135 in response to client 120 detecting a triggering identifier 150 viaa scanning component 128, as described herein. The coupon distributionserver relays information about offers saved in association with auser's account to retailer 145. The user may then take advantage of acoupon offer saved to his account by providing account identification132 to the retailer in a physical or online transaction.

18.1. Coupon Provider/Distributor

In an embodiment, coupon distributor 115 is any entity capable ofdistributing coupons on behalf of a coupon provider 195, such as amanufacturer, retailer, or advertiser. For the purposes of thisapplication, the act of distributing a coupon may herein refer to eitheror both of generating a coupon and saving a coupon offer to a useraccount in association with one or more account identifiers. In thiscontext, generating a coupon may include printing a coupon or creatingand storing digital data representing a digital coupon. A couponprovider 195 may contract with coupon distributor 115 to distributecoupons as part of a coupon campaign. The coupon provider 195 suppliescoupon distributor 115 with coupon distribution data 194 describing thecoupon offer(s), as well as parameters for each coupon campaign, such asa target number of coupons to distribute in aggregate, how many couponsmay be supplied to each individual end user, or start and end dates fordistribution. In an embodiment, coupon distributor 115 makes couponoffers available on behalf of multiple coupon providers 195.

Coupon providers 195 may transmit coupon distribution data 194 to coupondistributor 115 electronically via a network connecting coupon provider195 to coupon distribution server 110. For example, coupon distributionserver 110 may feature a web application, file sharing, or databaseaccess component by which providers 195 may upload coupon distributiondata 194 directly to coupon distribution server 110 or coupon data store112. Coupon providers 195 may also or instead transmit coupondistribution data 194 to coupon distributor 115 by any other suitablemeans, including orally over a telephone.

18.2. Coupon Distribution Server

Coupon distribution server 110 is operated by a coupon distributor 115for, among other purposes, making coupons available to users such asuser 135. In an embodiment, a server may refer to one or moreapplications executing on one or more computers or devices that interactwith counterpart client applications executing on other computers ordevices. Thus, coupon distribution server 110 may be one or more serverapplications, executing at one or more computing devices operated bycoupon distributor 115. In an embodiment, coupon distribution server 110facilitates the availability of user-selected coupon offers duringtransactions with retailer 145 without requiring user 135 to actuallypresent a physical coupon. Rather, coupon distribution server 110 savesinformation about one or more coupon offers to an identifier that theuser may provide in place of a coupon when engaging in a transaction atpoint-of-sale 150. In an embodiment, coupon distribution server 110 isfurther configured for distributing printable coupons to, among otherclients, client 120. However, coupon distribution server 110 need notnecessarily be capable of distributing coupons in the manners describedabove, and may in fact be capable of distributing coupons in othermanners, such as direct mailing.

Coupon distributor 115 maintains the data supplied by coupon providers195 as coupon data 116 in data store 112, which is coupled to coupondistribution server 110. Data store 112 may comprise one or moredatabases and/or file repositories. Coupon data 116 may take a varietyof forms, including database records and/or one or more files. Amongother aspects, coupon data 116 may comprise, for each coupon offer, datasuch as the name of the coupon provider 195 making the coupon offer,distribution parameters, terms of the coupon offer, print layoutinformation and graphics, one or more internal or provideridentification numbers, bar code generation information, one or morerelevant uniform resource locators (URLs), one or more coupon names ortitles, one or more related search terms, one or more relatedcategories, and/or one or more products or UPCs for which a coupon maybe valid. Distribution parameters may include aggregate distributionlimit values, per device distribution limit values, or per clientdistribution limit values.

Data store 112 further stores user account data 114. User account data114 includes data for one or more different user accounts, each of whichmay or may not be mapped to a unique user. Each of the user accounts mayhave been established with coupon distributor 115, or may have beenestablished with a retailer 145 and the details thereof may subsequentlybe communicated by the retailer 145 to coupon distributor 115. For eachuser account, user account data 114 specifies one or more accountidentifiers. Each account identifier may in turn be associated with dataidentifying one or more coupon offers in coupon data 116 that areavailable to a user. Some or all of the one or more coupon offers mayalso be associated with other account identifiers associated with theuser account. In an embodiment, the account identifiers are associatedwith unique instances of each coupon offer, wherein each unique instancehas a unique coupon identifier. For example, just as each coupon thatmay be printed by coupon distribution server 110 may have a uniquecoupon number, a unique coupon number may also be generated each time auser saves a coupon offer to the user's account. However, in otherembodiments, user account data 114 does not require unique couponidentifiers.

Data store 112 may also store other information related to coupondistribution and redemption, such as device data, distribution logs, andredemption logs. For example, device data may describe a plurality ofdevices, including client 120. Each device may be described by a deviceidentifier. Device data may include information such as hardwareidentifiers, client identifiers, geographic information, and permissionsdata. As another example, distribution logs may track the number ofcoupons that have been distributed for each coupon offer described incoupon data 116, including the number of times coupons have been printedand/or the number of times coupon offers have been saved to a useraccount. Distribution logs may further track how many times each devicedescribed in device data and/or user described in user account data 114has printed coupons for, viewed, and/or saved each coupon offerdescribed in coupon data 116. Distribution logs may further track whencoupons were distributed and where the user was located when the userrequested coupon distribution. Redemption logs may track which couponshave been redeemed, along with any amount of data about each redemption,including user account identifiers, timestamps, location data indicatingwhere the redemption occurred, and so forth.

Coupon distribution server 110 receives and responds to coupon-relatedrequests from client 120 over one or more networks, such as theInternet. Coupon distribution server 110 retrieves some or all of coupondata 116 to respond to various requests from client 120. For example,client 120 may request coupon distribution server 110 to provide alisting of available coupons, search for a coupon based on keywords, orsave a coupon offer to the user account for user 135. In response,coupon distribution server 110 may retrieve any relevant coupon data 116from data store 112, process the coupon data 116 as appropriate, and,based on that processing, formulate a response to the client.

Coupon distribution server 110 may be configured to control coupondistribution in a number of ways. For example, coupon distributionserver 110 may be configured to deny a client permission to print thecoupon, in accordance with device-based, client-based, or aggregatedistribution limits. As another example, coupon distribution server 110may be configured to deny a request to save a coupon to a user accountif a user has already printed a coupon from client 120. Coupondistribution server 110 may further be configured to deny a clientpermission to print the coupon based on geographic informationassociated with the client and/or coupon offer.

Coupon distribution server 110 may use distribution logs for sendingdistribution reports to coupon providers 195. The form of a report mayvary, and may include at least data indicating either a total number ofcoupons that have been distributed for a particular campaign or a totalnumber of coupons that have been distributed for the particular campaignsince the last report. Reports may be sent at varying frequencies, andin some embodiments a report may be sent each time a particular couponis printed. Reports may further include information harvested fromdevice data, such as geographic information or client types of thedevices to which coupons have been distributed.

18.3. Client

In an embodiment, client 120 is a computing device configured to executeone or more software applications that provide user 135 with aninterface to coupon distribution server 110. Client 120 may be any of avariety of devices, including a personal computer, printer, phone,scanner, camera, or portable computing device. The one or moreapplications executed by client 120 for interfacing with coupondistribution server 120 may include, for example, a standalone softwareapplication or a web browser. Client 120 need not necessarily beexecuted by a device that is owned or even exclusively operated by user135. For example, client 120 may be executed by an in-store kioskprovided to customers by retailer 145.

Client 120 communicates with coupon distribution server 110 over anetwork such as the Internet to receive coupon data, such as a listingof information about coupons available to user 135, including offerterms and values, as well as data describing a specific coupon offer insufficient detail to allow client 120 to print a coupon for the couponoffer at an optionally connected printer 129. Printer 129 is anyprinting device capable of printing a coupon. Printer 129 may beconnected to client 120 via any communication mechanism, or client 120may be integrated into printer 129.

Client 120 may, using various input or output mechanisms, allow user 135to view a list of available coupon offers, select a particular couponoffer from that list, and choose whether to print a coupon for theoffer, or to save the offer to user 135's account. In response to user135 selecting the latter option, client 120 may send a request to coupondistribution server 110 to save the selected offer to user 135'saccount, as stored in user account data 114. Client 120 may furtherallow a user to obtain a coupon using any of the techniques describedherein.

Client 120 communication with coupon distribution server 110 need not becontinuous, and may be initiated on either a client-call or server-callbasis as needed and/or whenever client 120 is connected to the samenetwork as coupon distribution server 110. For example, client 120 maywait to request a coupon for an identifier scanned by client 120 until anext synchronization cycle, or until client 120 is next within thereception range of a cellular network.

In an embodiment, multiple clients 120 may be available to a user, witheach client 120 potentially supporting different mechanisms by which theuser may detect an identifier or access a coupon offer. For example, oneclient 120 may only allow a user to print coupons via printer 129, butnot support identifier detection; another client 120 may only allow auser to save coupon offers to an account, but support identifierdetection; and another client 120 may allow all of the abovefunctionality. Each client 120 may be tied to the user's account, thusallowing a user to obtain a coupon using one client 120, but print orredeem the coupon using another client 120.

In an embodiment, some coupon data may be sent to client 120 from aserver at an external website, such as a retail website, instead ofcoupon distribution server 110. In such an embodiment, coupon requestsmay or may not be relayed through such an external website.

18.4. Information Server

Client 120 may optionally communicate with an information server 160 toperform one or more preliminary activities prior to coupon distributionserver 110 distributing a coupon. The information server 160 may presentinformation to the user, such as advertisements in video or other form,or collect information from the user via, for instance, an online form.The information server 160 may determine which information to present orcollect based on data provided by the client 120 or the coupondistribution server 110. The information server 160 may further reportcompletion of an activity to the client 120 or a coupon distributionserver 110.

Identifier 150 may direct client 120 to contact information server 160prior to requesting an coupon from coupon distribution server, or theclient 120 may be configured with logic to, prior to requesting a couponfor an offer selected at the device, determine whether client 120 shouldfirst contact information server 160. In an embodiment, the coupondistribution server 110 may instead instruct the client 120 to contactthe information server 160 in response to the coupon distribution server110 receiving a request to distribute a coupon. In an embodiment, noinformation server 160 is involved, or the information server 160 may beintegrated into the coupon distribution server 110.

18.5. Retailer

Retailer 145 is any entity that conducts transactions in which users,such as user 135, may redeem coupon offers at one of retailer'spoint-of-sale by providing an identifier, such as identifier 132.Retailer 145's point-of-sale(s) may be, for example, brick-and-mortarstore(s) or online website(s).

Coupon distribution server 110 sends coupon availability data forvarious account identifiers to retailer 145. For example, coupondistribution server 110 may periodically provide retailer 145 with atable of account identifiers and newly associated or disassociatedcoupon offers. Retailer 145 may then update an internal database basedon the coupon availability data. Coupon distribution server 110 does notnecessarily share its entire user account data 114 with retailer 145. Infact, retailer 145 may be oblivious to the concept of a user account,storing only identifiers and associated offers. Moreover, coupondistribution server 110 may only share data for certain types ofidentifiers with retailer 145. For instance, coupon distribution server110 may only share data pertaining to identifiers that retailer 145 hasindicated a willingness to accept (e.g. the retailer's own loyaltycards, or loyalty cards belonging to users who have been accepted intothe retailer's coupon program).

Retailer 145 periodically, or in response to a transaction, reportscoupon usage data to coupon distribution server 110. Coupon usage dataindicates the redemption of one or more coupon offers, accountidentifiers associated with the redemptions, locations at whichredemption occurred, and so forth.

Account identification 132 may be a series of characters and/or symbolsthat uniquely identifies user 135 or a user account associated with user135. For example, account identification 132 may identify a retailer'sloyalty account, a user account with coupon distributor 115, or both. Inthe latter case, for instance, account identification 132 may have beencreated to identify the retailer's loyalty account, but thensubsequently registered with the coupon distributor account, along withpotentially other identifiers. Account identification 132 may or may notalso identify or be identified from a physical item, such as a card orpersonal computing device. In an embodiment, the physical item is anyportable item that has an account identifier that can be readilyaccessed during a transaction.

In an embodiment, account identification 132 is a number on a card, suchas a credit card or customer loyalty card. User 135 may provideidentifier 132 during a transaction by, for example, scanning the cardat a card reader, typing or stating the numbers on the card, orproviding personal information by which the card number may be located,such as a telephone number.

In an embodiment, account identification 132 is a unique deviceidentifier belonging to a mobile phone, tablet computer, personaldigital assistant, flash drive, music player, camera, or other portablecomputing device. For example, the device identifier may be a MACaddress, Bluetooth address, serial number, randomly assigned uniquenumber, and so forth. User 135 may provide identification 132 during atransaction by, for example, allowing the portable device to broadcastidentification 132 wirelessly to the retailer's checkout system,allowing the retailer to scan the device, or allowing the retailer tosee or scan information displayed by the device. In an embodiment,identification 132 does not necessarily correspond to device hardware,but may rather be provided by a software application executing on thedevice.

In an embodiment, account identification 132 is emitted wirelessly by aradio-frequency identifying (RFID) chip or any other mechanism capableof transmitting signals that may be detected during a transaction withretailer 145. For example, the RFID chip may be embedded within a card,device, or other item carried by user 135.

In an embodiment, coupon distributor 115 allows user 135 to printaccount identification 132, or a barcode representation thereof, on asheet of paper. The paper may then be presented to the retailer 145during a transaction. Using this approach, user 135 can take advantageof the techniques described herein without having to remember accountidentification 132 and without having to present to the retailer 145 anidentifying card or device. The paper may or may not be reusable indifferent transactions at the same or at a different retailer.

In an embodiment, account identification 132 may be associated withbiometric data that uniquely identifies user 135, such as a fingerprintor a retinal scan. Thus, the user may provide the identifier in anembodiment by allowing a retailer to scan user 135 for the biometricdata.

18.6. Variations and Alternatives

System 100 as shown in FIG. 1 presents only one embodiment in which thetechniques described herein may be practiced. Other embodiments mayinclude additional and/or fewer elements, in potentially differentarrangements. For example, client 120 communications with coupondistribution server 110 may not be required in instances where theclient 120 is capable of generating a coupon based on identifier 150 byitself, and in some embodiments coupon distribution server 110 may notbe necessary at all. As another example, any of coupon provider 195,information server 160, coupon distributor 115, or retailer 145 may bethe same entity, and various other components may therefore be omitted.Moreover, printer 129 is not necessary to practice many of thetechniques described herein.

19.0. Hardware Overview

According to one embodiment, the techniques described herein areimplemented by one or more special-purpose computing devices. Thespecial-purpose computing devices may be hard-wired to perform thetechniques, or may include digital electronic devices such as one ormore application-specific integrated circuits (ASICs) or fieldprogrammable gate arrays (FPGAs) that are persistently programmed toperform the techniques, or may include one or more general purposehardware processors programmed to perform the techniques pursuant toprogram instructions in firmware, memory, other storage, or acombination. Such special-purpose computing devices may also combinecustom hard-wired logic, ASICs, or FPGAs with custom programming toaccomplish the techniques. The special-purpose computing devices may bedesktop computer systems, portable computer systems, handheld devices,networking devices or any other device that incorporates hard-wiredand/or program logic to implement the techniques.

For example, FIG. 5 is a block diagram that illustrates a computersystem 500 upon which an embodiment of the invention may be implemented.Computer system 500 includes a bus 502 or other communication mechanismfor communicating information, and a hardware processor 504 coupled withbus 502 for processing information. Hardware processor 504 may be, forexample, a general purpose microprocessor.

Computer system 500 also includes a main memory 506, such as a randomaccess memory (RAM) or other dynamic storage device, coupled to bus 502for storing information and instructions to be executed by processor504. Main memory 506 also may be used for storing temporary variables orother intermediate information during execution of instructions to beexecuted by processor 504. Such instructions, when stored innon-transitory storage media accessible to processor 504, rendercomputer system 500 into a special-purpose machine that is customized toperform the operations specified in the instructions.

Computer system 500 further includes a read only memory (ROM) 508 orother static storage device coupled to bus 502 for storing staticinformation and instructions for processor 504. A storage device 510,such as a magnetic disk or optical disk, is provided and coupled to bus502 for storing information and instructions.

Computer system 500 may be coupled via bus 502 to a display 512, such asa cathode ray tube (CRT), for displaying information to a computer user.An input device 514, including alphanumeric and other keys, is coupledto bus 502 for communicating information and command selections toprocessor 504. Another type of user input device is cursor control 516,such as a mouse, a trackball, or cursor direction keys for communicatingdirection information and command selections to processor 504 and forcontrolling cursor movement on display 512. This input device typicallyhas two degrees of freedom in two axes, a first axis (e.g., x) and asecond axis (e.g., y), that allows the device to specify positions in aplane.

Computer system 500 may implement the techniques described herein usingcustomized hard-wired logic, one or more ASICs or FPGAs, firmware and/orprogram logic which in combination with the computer system causes orprograms computer system 500 to be a special-purpose machine. Accordingto one embodiment, the techniques herein are performed by computersystem 500 in response to processor 504 executing one or more sequencesof one or more instructions contained in main memory 506. Suchinstructions may be read into main memory 506 from another storagemedium, such as storage device 510. Execution of the sequences ofinstructions contained in main memory 506 causes processor 504 toperform the process steps described herein. In alternative embodiments,hard-wired circuitry may be used in place of or in combination withsoftware instructions.

The term “storage media” as used herein refers to any non-transitorymedia that store data and/or instructions that cause a machine tooperation in a specific fashion. Such storage media may comprisenon-volatile media and/or volatile media. Non-volatile media includes,for example, optical or magnetic disks, such as storage device 510.Volatile media includes dynamic memory, such as main memory 506. Commonforms of storage media include, for example, a floppy disk, a flexibledisk, hard disk, solid state drive, magnetic tape, or any other magneticdata storage medium, a CD-ROM, any other optical data storage medium,any physical medium with patterns of holes, a RAM, a PROM, and EPROM, aFLASH-EPROM, NVRAM, any other memory chip or cartridge.

Storage media is distinct from but may be used in conjunction withtransmission media. Transmission media participates in transferringinformation between storage media. For example, transmission mediaincludes coaxial cables, copper wire and fiber optics, including thewires that comprise bus 502. Transmission media can also take the formof acoustic or light waves, such as those generated during radio-waveand infra-red data communications.

Various forms of media may be involved in carrying one or more sequencesof one or more instructions to processor 504 for execution. For example,the instructions may initially be carried on a magnetic disk or solidstate drive of a remote computer. The remote computer can load theinstructions into its dynamic memory and send the instructions over atelephone line using a modem. A modem local to computer system 500 canreceive the data on the telephone line and use an infra-red transmitterto convert the data to an infra-red signal. An infra-red detector canreceive the data carried in the infra-red signal and appropriatecircuitry can place the data on bus 502. Bus 502 carries the data tomain memory 506, from which processor 504 retrieves and executes theinstructions. The instructions received by main memory 506 mayoptionally be stored on storage device 510 either before or afterexecution by processor 504.

Computer system 500 also includes a communication interface 518 coupledto bus 502. Communication interface 518 provides a two-way datacommunication coupling to a network link 520 that is connected to alocal network 522. For example, communication interface 518 may be anintegrated services digital network (ISDN) card, cable modem, satellitemodem, or a modem to provide a data communication connection to acorresponding type of telephone line. As another example, communicationinterface 518 may be a local area network (LAN) card to provide a datacommunication connection to a compatible LAN. Wireless links may also beimplemented. In any such implementation, communication interface 518sends and receives electrical, electromagnetic or optical signals thatcarry digital data streams representing various types of information.

Network link 520 typically provides data communication through one ormore networks to other data devices. For example, network link 520 mayprovide a connection through local network 522 to a host computer 524 orto data equipment operated by an Internet Service Provider (ISP) 526.ISP 526 in turn provides data communication services through the worldwide packet data communication network now commonly referred to as the“Internet” 528. Local network 522 and Internet 528 both use electrical,electromagnetic or optical signals that carry digital data streams. Thesignals through the various networks and the signals on network link 520and through communication interface 518, which carry the digital data toand from computer system 500, are example forms of transmission media.

Computer system 500 can send messages and receive data, includingprogram code, through the network(s), network link 520 and communicationinterface 518. In the Internet example, a server 530 might transmit arequested code for an application program through Internet 528, ISP 526,local network 522 and communication interface 518.

The received code may be executed by processor 504 as it is received,and/or stored in storage device 510, or other non-volatile storage forlater execution.

In the foregoing specification, embodiments of the invention have beendescribed with reference to numerous specific details that may vary fromimplementation to implementation. The specification and drawings are,accordingly, to be regarded in an illustrative rather than a restrictivesense. The sole and exclusive indicator of the scope of the invention,and what is intended by the applicants to be the scope of the invention,is the literal and equivalent scope of the set of claims that issue fromthis application, in the specific form in which such claims issue,including any subsequent correction.

The invention claimed is:
 1. One or more non-transitorycomputer-readable media storing one or more instructions that, whenexecuted by one or more computing devices, cause: receiving, at anaddress associated with a first server, a first request for content;responsive to the first request, returning interactive content from thefirst server to a client device; prompting a user of the client deviceto participate in a prerequisite activity involving the interactivecontent; detecting, at the first server, an event comprising completingparticipation in the prerequisite activity; responsive to detecting theevent, sending confirmation to the client device; receiving, at a couponserver, a second request from the client device to distribute a coupon,wherein the second request includes offer identification data obtainedby the client device by decoding information associated with a consumerproduct; responsive to the second request, at the coupon server,identifying at least one digital coupon for the consumer product basedon the offer identification data; and distributing, by the couponserver, at least one coupon for the consumer product based onverification of participation in the prerequisite activity involving theinteractive content.
 2. The one or more non-transitory computer-readablemedia of claim 1, wherein the address includes a URL specifying: atleast the location of the first server, and instructions for what toinclude in the first request to the first server.
 3. The one or morenon-transitory computer-readable media of claim 2, wherein the one ormore instructions, when executed by the one or more computing devices,cause performance of: calling a coupon management application at theclient device, wherein the coupon management application is separatefrom a standard web browser of the client device, and wherein the couponmanagement application sends the second request to the coupon server. 4.The one or more non-transitory computer-readable media of claim 1,wherein the interactive content comprises at least one of: aninteractive web page, a video, and a server address; and wherein theprerequisite activity comprises at least one of a set of one or moreinteractions with the interactive web page, rendering the video, andaccessing the interactive content at the server address.
 5. The one ormore non-transitory computer-readable media of claim 1, wherein thefirst request includes identification data associated with the clientdevice.
 6. The one or more non-transitory computer-readable media ofclaim 1, wherein the information associated with the consumer product isdecoded by the client device by scanning a Quick Response (QR) code. 7.The one or more non-transitory computer-readable media of claim 1,wherein the one or more instructions, when executed by the one or morecomputing devices, cause performance of: at the coupon server, addingthe at least one coupon for the consumer product to one or more storeloyalty accounts associated with the user.
 8. The one or morenon-transitory computer-readable media of claim 7, wherein the one ormore instructions, when executed by the one or more computing devices,cause performance of: at the coupon server, providing instructions to acoupon management application executing on the client device to update aset of one or more coupons previously saved in association with one ormore of the user's store loyalty accounts.
 9. The one or morenon-transitory computer-readable media of claim 7, wherein the one ormore instructions, when executed by the one or more computing devices,cause performance of: at the coupon server, providing instructions to acoupon management application executing on the client device to update ashopping list to include one or more consumer products related to the atleast one coupon.
 10. A method comprising: receiving, at an addressassociated with a first server, a first request for content; responsiveto the first request, returning interactive content from the firstserver to a client device; prompting a user of the client device toparticipate in a prerequisite activity involving the interactivecontent; detecting, at the first server, an event comprising completingparticipation in the prerequisite activity; responsive to detecting theevent, sending confirmation to the client device; receiving, at a couponserver, a second request from the client device to distribute a coupon,wherein the second request includes offer identification data obtainedby the client device by decoding information associated with a consumerproduct; responsive to the second request, at the coupon server,identifying at least one digital coupon for the consumer product basedon the offer identification data; and distributing at least one couponfor the consumer product based on verification of participation in theprerequisite activity involving the interactive content.
 11. The methodof claim 10, further comprising: detecting, at the first server, anevent comprising completing participation in the prerequisite activity;and responsive to detecting the event at the first server, sending, fromthe first server, confirmation data to the client device to cause theclient device to send the second request to the coupon server.
 12. Themethod of claim 10, wherein the interactive content comprises at leastone of: an interactive web page, a video, and a server address; andwherein the prerequisite activity comprises at least one of a set of oneor more interactions with the interactive web page, rendering the video,and accessing the interactive content at the server address.
 13. Themethod of claim 10, further comprising verifying participation in theprerequisite activity involving the interactive content using the clientdevice, wherein verifying participation comprises at least one of:receiving confirmation at the coupon server from another serverassociated with the prerequisite activity, directly verifyingparticipation when the coupon server is the first server or otherwiseresides on the same one or more computing devices as the coupon server,and receiving verification data from a coupon management applicationrunning on the client device.
 14. The method of claim 13, wherein theinformation associated with the consumer product is a Quick Response(QR) code.
 15. The method of claim 10, wherein the first requestincludes identification data associated with the client device, themethod further comprising: distributing the at least one coupon for theconsumer product to the client device based at least on theidentification data.